Zoning data to a virtual machine

ABSTRACT

In a method to zone data to a virtual machine, support information is exchanged between a physical controller and an expander, the support information comprising an indication of an ability of the physical controller and the expander to support thereon a set of virtual controllers and a set of virtual physical layers (virtual PHYs), respectively. In response to a positive indication sending a list of SAS addresses to the expander, a list of SAS addresses is sent to the expander. Then, a first SAS address of the list of SAS addresses is assigned to a first virtual PHY of the set of virtual PHYs, wherein the assigning is performed by the expander, and wherein the first virtual PHY at an assigned SAS address corresponds to a first virtual controller of the set of virtual controllers.

RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/879,805, filed Apr. 17, 2013, currently allowed, which is hereinincorporated by reference in its entirety.

BACKGROUND

In general, a virtual machine is an efficient, isolated duplicate of areal machine. Virtual machines may be separated into two majorcategories, system virtual machines and process virtual machines. Inbrief, a system virtual machine provides a complete system platformwhich support the execution of a complete operating system. A processvirtual machine is designed to run a single program, which means that itsupports a single process.

System virtual machines allow the sharing of the underlying physicalmachine resources between different virtual machines, each running itsown operating system. The software layer providing the virtualization iscalled a virtual machine monitor or a hypervisor. The hypervisor can runon bare hardware (native VM) or on top of an operating system (hostedVM), based on their use and degree of correspondence to a real machine.Utilizing a hypervisor enables multiple operating system environments toreside on a single computer.

DESCRIPTION OF THE DRAWINGS

FIG. 1 A is a block diagram of a system for zoning data to a virtualmachine, according to one embodiment of the present technology.

FIG. 1 B is a block diagram of a system for zoning data to a virtualmachine, according to one embodiment of the present technology.

FIG. 2 is a block diagram of a device for zoning a hard drive to avirtual machine, according to one embodiment of the present technology.

FIG. 3 is a flow diagram of a method for zoning data to a virtualmachine, according to one embodiment of the present technology.

FIG. 4 is a diagram of an example computer system used for zoning datato a virtual machine, according to one embodiment of the presenttechnology.

The drawings referred to in this description should not be understood asbeing drawn to scale unless specifically noted.

DESCRIPTION OF EMBODIMENTS

Reference will now be made in detail to embodiments of the presenttechnology, examples of which are illustrated in the accompanyingdrawings. While the technology will be described in conjunction withvarious embodiment(s), it will be understood that they are not intendedto limit the present technology to these embodiments. On the contrary,the present technology is intended to cover alternatives, modificationsand equivalents, which may be included within the spirit and scope ofthe various embodiments as defined by the appended claims.

Furthermore, in the following detailed description, numerous specificdetails are set forth in order to provide a thorough understanding ofthe present technology. However, the present technology may be practicedwithout these specific details. In other instances, well known methods,procedures, components, and circuits have not been described in detailas not to unnecessarily obscure aspects of the present embodiments.

Unless specifically stated otherwise as apparent from the followingdiscussions, it is appreciated that throughout the present detaileddescription, discussions utilizing terms such as “exchanging”,“sending”, “assigning”, “receiving”, “coupling”, “accessing”,“determining”, “utilizing”, or the like, refer to the actions andprocesses of a computer system, or similar electronic computing device.The computer system or similar electronic computing device manipulatesand transforms data represented as physical (electronic) quantitieswithin the computer system's registers and memories into other datasimilarly represented as physical quantities within the computer systemmemories or registers or other such information storage, transmission,or display devices. The present technology is also well suited to theuse of other computer systems such as, for example, optical computers.

The discussion will begin with a brief overview of a single root complexutilizing input/output virtualization SR-IOV and a Serial Attached SmallComputer System Interface (SAS) system in relation to zoning hard drivesto a virtual machine associated with a SAS topology. The discussion willthen focus on embodiments of the present technology that provide asystem for zoning data to a virtual machine, within a SAS topology.

Overview

In general, single root topology involves a single computer thatsupports virtualization technology. SR-IOV is a specification thatenables multiple virtual machines running simultaneously within a singlecomputer to natively share one or more devices, such as computerexpansion cards (PCIe devices). Through the virtualization technology, ahypervisor, software on or firmware embedded in the computer's hardwareplatform, manages operating systems on the virtual machines. Thus, forexample, SR-IOV in conjunction with a hypervisor, allows a PCIe deviceto appear as multiple physical PCIe devices utilizing physical-functions(PFs) and virtual functions (VFs). SR-IOV may be used in conjunctionwith SAS.

Briefly, a SAS is a computer bus used to move data to and from computerstorage devices, such as hard drives. A SAS generally includes aninitiator device, a target device, and a service delivery subsystem.

The initiator device, also referred to as a controller, originatesdevice-service and task-management requests for processing to beperformed by a target device. The initiator device receives responses ofthese same requests from one or more target devices. An initiator devicemay be an on-board component on a motherboard.

A target device contains logical units and target ports. It receivesdevice-service and task-management requests for processing, and sendsresponses to these requests to the initiator device. A target device maybe a hard drive.

A service delivery subsystem is a part of an input/output system thattransmits information between the initiator device and the targetdevice. An expander device forms part of the service delivery subsystemand facilitates communication between devices within the SAS topology.For example, expanders facilitate the connection of multiple end devicesin the SAS topology to a port of an initiator device.

Currently, in order to zone a group of hard drives to a virtual machinein a SAS topology, the SR-IOV requires support both in the Basic InputOutput System (BIOS) and the Operating System (OS) or the hypervisor.For example, a SR-IOV capable SAS virtual controller presents itself asbeing multiple VFs, thus appearing to the hypervisor as multiple virtualcontrollers, one for each VF. In order to zone a group of hard drives tovirtual machines, the group of hard drives are first zoned to a PF.Secondly, using host side software such as a hypervisor, a subset ofthese hard drives are then mapped to a specific VF. The hard drives thenappear on the OS that is using that particular VF.

Embodiments of the present technology zone hard drives directly tospecific VFs using SAS technology, without the use of host side softwareor firmware, thereby increasing efficiencies by eliminating aconfiguration step of the current method. Further, since each virtualcontroller corresponds to a unique SAS address, SAS switch managementsoftware may determine if drives or storage enclosures zoned to virtualcontrollers can be powered down. For example, according to embodimentsof the present technology, if a hypervisor turns off a virtual machine,the SAS switch can determine that the hard drive that has been assignedto the virtual controller on that virtual machine no longer needs to bespun up. The SAS switch will then spin the hard drive down until thevirtual machine is powered on again. This power saving technique isapplicable to SAS expander devices, SAS expander PHYs, hard drives, andstorage enclosures.

The following discussion will begin with a description of the structureof the components of the present technology. The discussion will then befollowed by a description of the components in operation.

Structure

FIG. 1A is a block diagram of a system for zoning data to a virtualmachine, according to one embodiment of the present technology. FIG. 1Bis also a block diagram of a system for zoning data to a virtualmachine, according to another embodiment of the present technology.Referring now to FIGS. 1A and 1B, in one embodiment, the system 100includes a physical controller 102, at least one physical controllerphysical layer (physical controller PHY) 106 a, 106 b, 106 c and 106 n .. . ), an expander 110 and a set of expander virtual PHYs 118 a, 118 b,118 c and 118 n . . . and a set of expander physical layers (expanderPHYs) 126 a, 126 b, 126 c and 126 n . . . both coupled with the expander110.

In one embodiment, the physical controller 102 is coupled with a server104. In another embodiment, at least one physical controller PHY 106 a,106 b, 106 c and 106 n . . . (hereinafter, at least one physicalcontroller PHY 106) is coupled with the physical controller 102. Itshould be understood that the system 100 may include anywhere from onephysical controller PHY to as many physical controller PHYs (physicalcontroller PHY 106 n . . . ) that the physical controller 102 maysupport. For purposes of clarity and brevity hereinafter, when referringto at least one physical controller PHY in general, physical controllerPHY 106 will be referenced. At least one physical controller PHY 106 arecoupled with the outer edges of physical controller 102.

In one embodiment, system 100 includes an expander 110 coupled with aSAS switch 112 and is further communicatively coupled with the physicalcontroller 102. In one embodiment, the SAS switch is within SAS topology170. By communicatively coupled, it is meant that the expander 110 iscoupled with physical controller 102 in a manner which enables theexpander 110 and the physical controller 102 to exchange information.

In one embodiment, the communicative coupling occurs through a physicalconnection, such as a cable. For example, in one embodiment, the system100 utilizes 4 physical layer (PHY) lanes per cable. It should beappreciated that more or less PHY lanes per cable may be used and isdependent on the cable's size and ability to enclose the PHY lanes. Inanother embodiment, the communicative coupling is achieved throughwiring. For example, in blade server system, internal wiring within theblade enclosure connects the server 104 and the physical controller 102coupled therewith with the expander 110.

In one embodiment, the expander 110 includes a virtual to physicalmapping table 114. The virtual to physical mapping table 114 includes avirtual physical layer (virtual PHY) to physical controller PHY mappinginformation 116. The virtual PHY to physical controller PHY mappinginformation 116 refers to information for routing data from a virtualPHY that is coupled with the expander 110, as will be explained herein,to at least one physical controller PHY 106 coupled with the physicalcontroller 102.

In one embodiment, the set of virtual PHYs 118 a, 118 b, 118 c and 118 n. . . (hereinafter, set of virtual PHYs 118 unless otherwise specified)of system 100 is configured for receiving data 122 to be routed to afirst virtual machine 124 a. It should be understood that the set ofvirtual PHYs 118 may include just one virtual PHY or any amount ofvirtual PHYs greater than one that may be physically supported by theexpander 110. In one embodiment, the set of virtual PHYs 118 are coupledwith the outer edges of the expander 110. It should be appreciated thatdata 122 from more than one virtual PHY of the set of virtual PHYs 118may be routed to the same physical controller PHY of the at least onephysical controller PHY 106. Additionally, while the virtual machine 124a is shown in FIGS. 1A, 1B and 2 and residing on physical controller102, it should be understood that a portion of the group of virtualmachines 124 a, 124 b, 124 c and 124 n may reside separately from thephysical controller 102 and coupled therewith.

In one embodiment and as will be explained herein in the Operationsection below, the data 122 causes a storage drive to be communicativelycoupled with a virtual PHY of the set of virtual PHYs 118. The data 122may be instructions to zone a device 168 such as, but not limited to, aparticular storage enclosure, to a server 104 and/or a particularphysical controller on that server 104.

In one embodiment, the set of expander PHYs 126 a, 126 b, 126 c and 126n . . . (hereinafter expander PHYs 126 unless otherwise specified) arecoupled with the expander 110. It should be understood that the set ofexpander PHYs 126 may include just one expander PHY or any amount ofexpander PHYs greater than one that may be physically supported by theexpander 110. In one embodiment, the set of expander PHYs 126 isconfigured for relaying the received data 130 to a physical controllerPHY of the at least one physical controller PHY 106. In one embodiment,the physical controller 102 and the expander 110 are configured forexchanging support information 132. The support information 132 includesan indication of an ability of the physical controller 102 and theexpander 110 to support thereon a set of virtual controllers 124 and theset of virtual PHYs 118, respectively. In one embodiment, the physicalcontroller 102 queries the expander 110 if the expander 110 is enabledto support a set of virtual PHYs 118. In another embodiment, theexpander 110 queries the physical controller 102 if the physicalcontroller 102 is enabled to support a set of virtual controllers 124.It should be understood that the set of virtual controllers 124 mayinclude one or more than one virtual controllers. Further, it should beappreciated that more than one physical controller 102 may be coupledwith server 104, having thereon physical controller PHYs.

In one embodiment, the system 100 further includes a SAS address listsender 136 and a SAS address list assigner 144. In one embodiment, theSAS address list sender 136 is coupled with the physical controller 102.In one embodiment, the SAS address list sender 136 is configured forsending to the expander 110 a list of SAS addresses 138 that includesSAS addresses 140 a, 140 b, 140 c and 140 n . . . (hereinafter, SASaddresses 140 unless otherwise specified). Each SAS address of the listof SAS addresses 138 represents a virtual controller of a set of virtualcontrollers 142. Further, the list of SAS addresses 138, in oneembodiment, may be found in SAS address store 172. The set of virtualcontrollers 142 includes virtual controllers 142 a, 142 b, 142 c and 142n . . . . It should be understood that the set of virtual controllers142 may include any number of virtual controllers greater than one thatis capable of being supported by system 100 and its components.Furthermore, as shown in FIGS. 1A and 1B, as well as FIG. 2 to bedescribed herein, four virtual machines are shown, virtual machines 124a, 124 b, 124 c and 124 n . . . . It should be understood that anynumber of virtual machines greater than one that is capable of beingsupported by system 100 and its components may be present in system 100.Furthermore, virtual machines 124 a, 124 b, 124 c and 124 n may berepresented herein as a set of virtual machines 124.

While the set of virtual machines 124 is shown in FIGS. 1A and 1B asbeing part of the physical controller 102, and the set of virtualcontrollers 142 is shown as being part of the set of virtual machines124, it should be noted that the set of virtual machines 124 may beoutside the physical controller 102, but associated with a virtualcontroller of the set of virtual controllers 142 that may be part of thephysical controller 102.

In another embodiment, the SAS address list assigner 144 is coupled withthe expander 110. The SAS address list assigner 144 is configured forassigning a first SAS address 140 a of the list of SAS addresses 138 toa first virtual PHY 118 a of the set of virtual PHYs 118. The firstvirtual PHY 118 a at the assigned SAS address 140 a represents anexpander PHY of the set of expander PHYs 126 as being connected to avirtual controller of the set of virtual controllers 142. It should beunderstood that any one of the set of virtual PHYs 118, set of virtualcontrollers 142 and virtual machines 124 may be designated as the“first” virtual PHY, virtual controller and virtual machine,respectively.

In one embodiment, system 100 further includes a virtual to physicalmapping table information accessor 146 and a target PHY determiner 148.In one embodiment, the virtual to physical mapping table informationaccessor 146 is coupled with the expander 110. The virtual to physicalmapping table information accessor 146 is configured for accessing thevirtual PHY to physical controller PHY mapping information 116.

In one embodiment, the target PHY determiner 148 is coupled with thevirtual to physical mapping table information accessor 146. In oneembodiment, the target PHY determiner 148 is configured for determininga target physical controller PHY 150 of the at least one physicalcontroller PHY 106 to which to send the received data 130 based on thevirtual PHY to physical controller PHY mapping information 116. Forexample and as is explained herein in the Operation section, the virtualPHY to physical controller PHY mapping information 116 providesinformation as to which physical controller PHY to which to route thereceived data 130.

In one embodiment, the system 100 further includes an expander datasender 152 that is coupled with the expander 110. The expander datasender 152, in one embodiment, is configured for sending the receiveddata 130 to the target physical controller PHY 150. The target physicalcontroller PHY 150 may be any one of the at least one physicalcontroller PHYs 106. Once the received data 130 is sent to the targetphysical controller PHY 150 as designated, the received data 130 becomes“target physical controller PHY data” 154. For example, the targetphysical controller PHY 150 may be determined to be physical controllerPHY 106 a.

Embodiments of the present technology further include a target physicalcontroller PHY accessor 156 and a physical controller data sender 158.In one embodiment, the target physical controller PHY accessor 156 iscoupled with the physical controller 102. The target physical controllerPHY accessor 156 is configured for accessing the target physicalcontroller PHY data 154 at the target physical controller PHY, such astarget physical controller PHY 106 a.

In one embodiment, the system 100 further includes an instructionmanager 160 that is coupled with the expander 110. In one embodiment,the instruction manager 160 is configured for receiving an expanderzoning instruction 162 via a graphical user interface 164. The expanderzoning instruction 162, in one embodiment, is received at the expander110. The expander zoning instruction 162 comprises at least one virtualPHY to a virtual controller mapping direction 166.

FIG. 2 shows a block diagram of a device 200 for zoning a hard drive toa virtual machine, in accordance with embodiments of the presenttechnology. Referring now to FIGS. 1A, 1B and 2, in one embodiment, thedevice 200 includes a physical controller 102 and at least one physicalcontroller PHY 106. In one embodiment, the physical controller 102 iscoupled with a server 104.

In one embodiment, the physical controller 102 includes a supportdeterminer 202 and an SAS address list sender 136. In one embodiment,the support determiner 202 is configured for communicating with anexpander 110 that is coupled with a SAS switch 112. The communicatingincludes determining if the expander 110 is enabled to support a set ofvirtual PHYs 118 thereon, as is explained herein.

In one embodiment, the SAS address list sender 136 is configured forsending a list of SAS addresses 138 to the expander 110 if the expander110 is determined to be enabled to support a set of virtual PHYs 118thereon. In one embodiment, each SAS address 140 a, 140 b, 140 c and 140n . . . of the list of SAS addresses 138 represents a virtualcontroller, such as virtual controller 142 a.

In another embodiment, the physical controller 102 further includes atarget physical controller PHY accessor 156 and a physical controllerdata sender 158. In one embodiment, the target physical controller PHYaccessor 156 is configured for accessing the target physical controllerPHY data 154 at the target physical controller PHY 150.

In another embodiment, the physical controller data sender 158 isconfigured for sending to a virtual controller, such as virtualcontroller 142 a, the target physical controller PHY data 154.

In one embodiment, at least one physical controller PHY 106 is coupledwith the physical controller 102. In one embodiment, the at least onephysical controller. PHY 106 is configured for enabling communicationwith the expander 110. The communication includes the sending of thelist of SAS addresses 138 and the receiving of target physicalcontroller PHY data 154 at the target physical controller PHY 150.

Thus, embodiments of the present technology expose a virtual controllerto an SAS topology, thereby enabling the direct assignation of harddrives to the virtual machine associated with the virtual controller.For example, embodiments do not follow the current method of utilizinghost firmware to zone SAS storage; the controller and the expanderfirmware on the SAS switch are employed. Thus, embodiments provide for amore direct and efficient system for zoning a hard drive to a virtualmachine.

Operation

In embodiments of the present technology, an expander publishes virtualcontrollers as being connected with virtual PHYs. In this manner,embodiments provide a method for directly zoning data to a virtualmachine without utilizing host firmware.

FIG. 3 is a flow diagram of a method 300. In one embodiment, method 300is embodied in instructions, stored on a non-transitorycomputer-readable storage medium, which when executed by a computersystem (see 400 of FIG. 4), cause the computer system to perform themethod 300 for zoning data to a virtual machine. The method 300 isdescribed below with reference to both FIGS. 1A, 1B,2 and 3.

At 302, in one embodiment and as described herein, the method 300includes instructions for exchanging support information 132 between aphysical controller 102 and an expander 110, the physical controller 102being coupled with a server 104 and the expander 110 being coupled witha SAS switch 112. In one embodiment, the support information 132comprises an indication of an ability of the physical controller 102 andthe expander 110 to support thereon a set of virtual controllers 124 anda set of virtual PHYs 118, respectively.

At 304, in one embodiment, the exchanging at 302 includes determiningexpander PHYs on the expander 110, wherein the expander PHYs comprise atleast one of a set of expander physical PHYs and a set of virtual PHYs118. Additionally, at 304, the exchanging at 302 further includesaccessing information about a device 168 that is coupled with one of theexpander PHYs.

For example and as is known in the art, the physical controller 102tries to determine what devices are present in the SAS topology. Inorder to determine this, the physical controller 102 will communicatewith the expander 110 and discover everything that is attached to theexpander 110, whether it be another expander and/or a device, such as,but not limited to, storage enclosures. As described herein, a set ofvirtual PHYs 118 are coupled with the expander 110. From the perspectiveof the physical controller 102, the set of virtual PHYs 118 looksexactly like the set of expander physical PHYs. The physical controller102 queries all of the PHYs, the expander physical PHYs and the set ofvirtual PHYs 118 to determine what if any devices are attached to theexpander PHYs. The expander PHYs will respond to the physical controller102 by describing what devices are attached thereto.

In embodiments of the present technology, the physical controller 102sends commands to the expander 110 to determine whether or not theexpander supports a set of virtual PHYs 118. The content of thesecommands may be vendor specific and/or customized for the user/owner. Inone embodiment, a set of virtual controllers 124 is coupled with the setof virtual PHYs 118. Thus, the set of virtual PHYs 118 may describe aset of virtual controllers 124 attached thereto. From the perspective ofthe physical controller 102, the set of virtual controllers 124 appearsto be a set of physical controllers. Thus, if the physical controller102 discovers a device, such as device 168 (which may be SAS storage),that is attached to the set of virtual PHYs 118, the physical controller102 then opens a connection to the device 168 so that communicationbetween the device 168 and the physical controller 102 is possible. Aswill be described herein, the physical controller 102 then may directthe device 168 to be zoned to one of a set of virtual controllers 124 ona virtual machine.

At 306, the method 300 includes instructions for, in response to theability at 302 being positively indicated, sending a list of SASaddresses 138 to the expander 110, wherein the list of SAS addresses 138is sent from the physical controller 102. Furthermore, in oneembodiment, each SAS address of the list of SAS addresses 138 representsa virtual controller 124. In other words, the physical controller 102provides a list of SAS addresses 133 that the physical controller 102wants to use to represent the set of virtual controllers 124. Theexpander 110 receives this list of SAS addresses 138. For each virtualPHY of the set of virtual PHYs 118, the expander 110 will appoint oneSAS address of the list of SAS addresses 138 to that virtual PHY.Accordingly, each virtual PHY with an appointed SAS address looks like aphysical controller, while being associated with a set of virtualcontrollers 124. The expander 110 receives the SAS addresses for the setof virtual controllers 124 and uses these SAS addresses to set up theset of virtual PHYs 118 to appear as a set of virtual controllers 124.

At 308, the method 300 includes instructions for assigning a first SASaddress, such as 140 a, of the list of SAS addresses 138 to a firstvirtual PHY 118 a of the set of virtual PHYs 118. The assigning 308 isperformed by the expander 110. The first virtual PHY 118 a at theassigned SAS address 140 a represents a first virtual controller 142 aof the set of virtual controllers 124.

At 310, in one embodiment the method 300 further includes instructionsfor receiving data at the first virtual PHY, such as virtual PHY 118 a.At 312, in another embodiment the receiving data at 308 includescommunicatively coupling a storage drive with the first virtual PHY,such as virtual PHY 118 a. By communicatively coupling at 308, it ismeant that a storage drive is coupled via cable (utilizing PHY lanes)and/or internal wiring (within a blade enclosure) with a first virtualPHY.

At 314, in one embodiment and as described herein, the method 300further includes instructions for accessing a virtual to physicalmapping table 114, wherein virtual to physical mapping table informationof the virtual to physical mapping table 114 includes virtual PHY tophysical controller PHY mapping information 116.

At 316, in one embodiment and as described herein the method 300 furtherincludes instructions for determining a target physical controller PHY150 of the at least one physical controller PHY 106 for the receiveddata 130 based on the virtual PHY to physical controller PHY mappinginformation 116, wherein the at least one physical controller PHY 106 iscoupled with the physical controller 102.

At 318, in one embodiment and as described herein, the method furtherincludes instructions for sending the received data 130 from theexpander 110 to the target physical controller PHY 150.

At 320, in one embodiment and as described herein, the method furtherincludes instructions for utilizing the physical controller 102 toaccess target physical controller PHY data 154 received at the targetphysical controller PHY 150. Further, at 320, the physical controller102 sends the accessed target physical controller PHY data 154 to thefirst virtual controller, such as virtual controller 142 a.

At 322, in one embodiment and as described herein, the method furtherincludes instructions for receiving expander zoning instructions 162 viaa graphical user interface 164, wherein the expander zoning instructions162 includes at least one virtual PHY to physical controller mappingdirection 166. In another embodiment, the expander zoning instructions162 may be any instruction associated with zoning a device 168, such asbut not limited to, hard drives.

At 324, in one embodiment the method 300 further includes instructionsfor assigning a second SAS address, such as SAS address 140 b, to asecond virtual PHY 118 b of the set of virtual PHYs 118, wherein theassigning is performed by the expander 110. Additionally, the secondvirtual PHY 118 b at that second assigned SAS address 140 b represents asecond virtual controller 142 b of the set of virtual controllers 124.Further, at 326, in one embodiment, the method 300 at 324 furtherincludes receiving data at the second virtual PHY 118 b. For example,this data may be instructions for coupling a hard drive to a virtualcontroller, and therefore a virtual machine.

Thus, in one embodiment, any outgoing request from a virtual controller142 is sent directly to the storage device (e.g., hard drive). While,any incoming response form the storage device is intercepted by theexpander 110 and redirected to the physical controller Phys 106 usingthe virtual to physical mapping table 116.

Currently, there is no standard way of assigning SAS storage directly tovirtual machines in a way that only affects the physical controller andSAS switch expander firmware. Embodiments of the present technologyprovide a method for directly zoning SAS storage to a virtual machinewhich reduces host firmware involvement and thereby increases theoverall efficiency of zoning. Furthermore, embodiments provide a methodfor more efficient power management.

Example Computer System Environment

With reference now to FIG. 4, portions of the technology for performinga method for zoning data to a virtual machine are composed ofcomputer-readable and computer-executable instructions that reside, forexample, in computer-readable storage media of a computer system. Thatis, FIG. 4 illustrates one example of a type of computer that can beused to implement embodiments, which are discussed below, of the presenttechnology.

FIG. 4 illustrates an example computer system 400 used in accordancewith embodiments of the present technology. It is appreciated thatsystem 400 of FIG. 4 is an example only and that the present technologycan operate on or within a number of different computer systemsincluding general purpose networked computer systems, embedded computersystems, routers, switches, server devices, user devices, variousintermediate devices/artifacts, stand alone computer systems, and thelike. As shown in FIG. 4, computer system 400 of FIG. 4 is well adaptedto having peripheral computer readable media 402 such as, for example, afloppy disk, a compact disc, and the like coupled thereto.

System 400 of FIG. 4 includes an address/data bus 404 for communicatinginformation, and a processor 406A coupled to bus 404 for processinginformation and instructions. As depicted in FIG. 4, system 400 is alsowell suited to a multi-processor environment in which a plurality ofprocessors 406A, 406B, and 406C are present. Conversely, system 400 isalso well suited to having a single processor such as, for example,processor 406A. Processors 406A, 406B, and 406C may be any of varioustypes of microprocessors. System 400 also includes data storage featuressuch as a computer usable volatile memory 408, e.g. random access memory(RAM), coupled to bus 404 for storing information and instructions forprocessors 406A, 406B, and 406C.

System 400 also includes computer usable non-volatile memory 410, e.g.read only memory (ROM), coupled to bus 404 for storing staticinformation and instructions for processors 406A, 406B, and 406C. Alsopresent in system 400 is a data storage unit 412 (e.g., a magnetic oroptical disk and disk drive) coupled to bus 404 for storing informationand instructions. System 400 also includes an optional alphanumericinput device 414 including alphanumeric and function keys coupled to bus404 for communicating information and command selections to processor406A or processors 406A, 406B, and 406C. System 400 also includes anoptional cursor control device 416 coupled to bus 404 for communicatinguser input information and command selections to processor 406A orprocessors 406A, 406B, and 406C. System 400 of the present embodimentalso includes an optional display device 418 coupled to bus 404 fordisplaying information.

Referring still to FIG. 4, optional display device 418 of FIG. 4 may bea liquid crystal device, cathode ray tube, plasma display device orother display device suitable for creating graphic images andalphanumeric characters recognizable to a user. Optional cursor controldevice 416 allows the computer user to dynamically signal the movementof a visible symbol (cursor) on a display screen of display device 418.Many implementations of cursor control device 416 are known in the artincluding a trackball, mouse, touch pad, joystick or special keys onalpha-numeric input device 414 capable of signaling movement of a givendirection or manner of displacement. Alternatively, it will beappreciated that a cursor can be directed and/or activated via inputfrom alpha-numeric input device 414 using special keys and key sequencecommands.

System 400 is also well suited to having a cursor directed by othermeans such as, for example, voice commands. System 400 also includes anI/O device 420 for coupling system 400 with external entities. Forexample, in one embodiment, I/O device 420 is a modern for enablingwired or wireless communications between system 400 and an externalnetwork such as, but not limited to, the Internet. A more detaileddiscussion of the present technology is found below.

Referring still to FIG. 4, various other components are depicted forsystem 400. Specifically, when present, an operating system 422,applications 424, modules 426, and data 428 are shown as typicallyresiding in one or some combination of computer usable volatile memory408, e.g. random access memory (RAM), and data storage unit 412.However, it is appreciated that in some embodiments, operating system422 may be stored in other locations such as on a network or on a flashdrive; and that further, operating system 422 may be accessed from aremote location via, for example, a coupling to the internet. In oneembodiment, the present technology, for example, is stored as anapplication 424 or module 426 in memory locations within RAM 408 andmemory areas within data storage unit 412. The present technology may beapplied to one or more elements of described system 400. For example, amethod for identifying a device associated with a transfer of contentmay be applied to operating system 422, applications 424, modules 426,and/or data 428.

The computing system 400 is only one example of a suitable computingenvironment and is not intended to suggest any limitation as to thescope of use or functionality of the present technology. Neither shouldthe computing environment 400 be interpreted as having any dependency orrequirement relating to any one or combination of components illustratedin the example computing system 400.

The present technology may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc., that performparticular tasks or implement particular abstract data types. Thepresent technology may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer-storage media including memory-storage devices.

The present technology may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc., that performparticular tasks or implement particular abstract data types. Thepresent technology may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer-storage media including memory-storage devices.

All statements herein reciting principles, aspects, and embodiments ofthe invention as well as specific examples thereof, are intended toencompass both structural and functional equivalents thereof.Additionally, it is intended that such equivalents include bothcurrently known equivalents and equivalents developed in the future,i.e., any elements developed that perform the same function, regardlessof structure. The scope of the present invention, therefore, is notintended to be limited to the exemplary embodiments shown and describedherein. Rather, the scope and spirit of present invention is embodied bythe appended claims.

1. A non-transitory computer-readable storage medium comprisinginstructions stored which, when executed by an expander of a serialattached small computer system interface (SAS) switch, cause theexpander to: exchange support information between the expander and aphysical controller, the physical controller coupled to a server, thesupport information comprising an indication of an ability of thephysical controller to support a set of virtual controllers and anindication of an ability of the expander to support a set of virtualPHYs; receive a list of SAS addresses at the expander from the physicalcontroller, the SAS addresses representing virtual controllers of theset of virtual controllers; and assign a first SAS address of the listof SAS addresses to a first virtual PHY of the set of virtual PHYs bythe expander based upon virtual PHY to physical controller PHY mappinginformation, the first virtual PHY at an assigned SAS addresscorresponding to a first virtual controller of the set of virtualcontrollers.
 2. The non-transitory computer-readable storage medium ofclaim 1, the instructions to further cause the expander to: receive datavia the first virtual PHY.
 3. The non-transitory computer-readablestorage medium of claim 2, the instructions to further cause theexpander to: couple a storage drive with the first virtual PHY.
 4. Thenon-transitory computer-readable storage medium of claim 1, theinstructions to further cause the expander to: access a virtual tophysical mapping table having virtual to physical mapping tableinformation comprising the virtual PHY to physical controller PHYmapping information.
 5. The non-transitory computer-readable storagemedium of claim 4, the instructions to further cause the expander to:determine a target physical controller PHY of at least one physicalcontroller PHY for received data based on the virtual PHY to physicalcontroller PHY mapping information, the at least one physical controllerPHY being coupled with the physical controller.
 6. The non-transitorycomputer-readable storage medium of claim 5, the instructions to furthercause the expander to: send the received data from the expander to thetarget physical controller PHY.
 7. The non-transitory computer-readablestorage medium of claim 1, the instructions to further cause theexpander to: receive zoning instructions via a graphical user interface,the zoning instructions comprising the virtual PHY to physicalcontroller PHY mapping information.
 8. The non-transitorycomputer-readable storage medium of claim 1, the instructions to furthercause the expander to: assign a second SAS address of the list of SASaddresses to a second virtual PHY of the set of virtual PHYs, the secondvirtual PHY at a second assigned SAS address representing a secondvirtual controller of the set of virtual controllers.
 9. Thenon-transitory computer-readable storage medium of claim 8, theinstructions to further cause the expander to: receive data at thesecond virtual PHY.
 10. The non-transitory computer-readable storagemedium of claim 1, the instructions to further cause the expander to:determine expander PHYs on the expander, the expander PHYs comprising atleast one of a set of expander physical PHYs and the set of virtualPHYs.
 11. The non-transitory computer-readable storage medium of claim10, the instructions to further cause the expander to: accessinformation about a device coupled with one of the expander PHYs.
 12. Aserial attached small computer system interface (SAS) switch comprising:an expander coupled with a physical controller having at least onephysical controller PHY, the expander comprising: a virtual to physicalmapping table comprising virtual PHY to physical controller PHY mappinginformation; and a set of virtual PHYs to receive data to be routed to afirst virtual machine; and a set of expander PHYs coupled with theexpander to relay the data to a physical controller PHY of the at leastone physical controller PHY, the expander to exchange supportinformation with the physical controller, the support informationcomprising an indication of an ability of the physical controller tosupport a set of virtual controllers and an indication of an ability ofthe expander to support the set of virtual PHYs.
 13. The SAS switch ofclaim 12, the expander further to: receive a list of SAS addresses fromthe physical controller, the SAS addresses of the list of SAS addressesrepresenting virtual controllers of the set of virtual controllers. 14.The SAS switch of claim 13, further comprising: a SAS address listassigner coupled with the expander to assign a first SAS address of thelist of SAS addresses to a first virtual PHY of the set of virtual PHYs,the first virtual PHY at the first SAS address corresponding to a firstvirtual controller of the set of virtual controllers on the firstvirtual machine.
 15. The SAS switch of claim 14, further comprising: avirtual to physical mapping table information accessor coupled with theexpander to access the virtual PHY to physical controller PHY mappinginformation.
 16. The SAS switch of claim 15, further comprising: atarget PHY determiner coupled with the virtual to physical mapping tableinformation accessor to determine a target physical controller PHY ofthe at least one physical controller PHY to which to send the data basedon the virtual PHY to physical controller PHY mapping information. 17.The SAS switch of claim 12, the virtual to physical mapping table isbased upon zoning instructions for the expander from a graphical userinterface, the zoning instructions comprising at least one virtual PHYto physical controller mapping direction.
 18. A non-transitorycomputer-readable storage medium comprising instructions stored which,when executed by a physical controller of a server, cause the physicalcontroller to: communicate with an expander that is coupled with aserial attached small computer system interface (SAS) switch todetermine that the expander is enabled to support a set of virtual PHYs;send a list of SAS addresses via at least one physical controller PHYcoupled with the physical controller to the expander when the expanderis determined to be enabled to support the set of virtual PHYs, the SASaddresses of the list of SAS addresses representing virtual controllers;and receive target physical controller PHY data at a target physicalcontroller PHY of the at least one physical controller PHY from theexpander.
 19. The non-transitory computer-readable storage medium ofclaim 18, the instructions to further cause the physical controller to:access the target physical controller PHY data received at the targetphysical controller PHY.
 20. The non-transitory computer-readablestorage medium of claim 19, the instructions to further cause thephysical controller to: send the target physical controller PHY data toa first virtual controller of the virtual controllers that is associatedwith the target physical controller PHY.